#include <bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn = 1e2 + 5;
int N, V;
int s[maxn];
int w[maxn][maxn];
int v[maxn][maxn];

int dp[maxn][maxn];




void solve(){
	cin >> N >> V;
	
	for (int i=1;i<=N;i++) {
		cin >> s[i];
		
		for (int j=1;j<=s[i];j++) {
			cin >> w[i][j] >> v[i][j];
		}
	}
	
	
	for (int i=1;i<=N;i++) {
		for (int j=1;j<=V;j++) {
			// 这一组不选
			dp[i][j] = dp[i-1][j];
			
			// 这一组选一个
			for (int k=1;k<=s[i];k++) {
				dp[i][j] = max(dp[i][j], dp[i-1][j-w[i][k]]+v[i][k]);
			}
		}
	}
	
	cout << dp[N][V] << '\n';
	
}

signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}

